package com.Annotation注解;//435

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 作    者 ：吾路巴尼
 * 创建时间 ：2025/2/13-17:25
 * JDK的四中元注解 ： 了解即可；
 * @Retention（保留） 指定注解的作用范围：SOURCE（源码），CLASS（类），RUNTIME（运行时）
 * @Target 指定注解的使用范围：TYPE（类），FIELD（属性），METHOD（方法），PARAMETER（参数），CONSTRUCTOR（构造器），LOCAL_VARIABLE（局部变量），ANNOTATION_TYPE（注解），PACKAGE（包）
 * @Documented 注解是否会在javadoc中显示，只要使用@Documented注解，则该注解在javadoc中会保留；
 * @Inherited 子类可以继承父类的注解，被它修饰的 Annotation将具有继承性，如果某个类使用了被@inherited修饰的Annotation则其子类会自动具有该注解 ；
 */
public class 元注解 {
}
/***1.@Retention(RetentionPolicy.CLASS)
 * @Retention（保留）
 * @RetentionPolicy.SOURCE：注解作用在源码后，不会保存在class字节码文件中
 * @RetentionPolicy.CLASS：注解作用在class字节码文件，JVM不会保留注释；
 * @RetentionPolicy.RUNTIME：注解作用在运行时，JVM保留注释，可以通过反射获取到注解信息
 */


/**2.@Target:指定注解的使用范围
 * 举例子说明；
 * 1.@Documented
 * @Retention(RetentionPolicy.RUNTIME)
 * @Target(ElementType.ANNOTATION_TYPE)  // 指定了@Documented该注解可以作用类型在ANNOTATION_TYPE(注解)上；
 * public @interface Retention {
 *       RetentionPolicy value();}
 *
 *2.@SuppressWarnings
 * @Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE, MODULE})
 * // 指定了@SuppressWarnings注解可以作用在类型在TYPE，FIELD，METHOD，PARAMETER，CONSTRUCTOR，LOCAL_VARIABLE，MODULE上；
 * @Retention(RetentionPolicy.SOURCE)
 * public @interface SuppressWarnings {
 *    String[]value(); }
 */


/**
 * 4.@Inherited
 * 假如A类的注解被@Inherited修饰，则B类继承A类，B类也会自动继承A类的注解；
 */

